package com.cheng.controller;

import com.cheng.common.results.DataRslt;
import com.cheng.data.vo.UserInfoVO;
import org.apache.shiro.SecurityUtils;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;

/**
 * @author: ChengJW
 * @date: 2021/11/04 20:14
 * @version: 1.0
 * @description:
 */
public class BaseController {


    /**
    * @author: ChengJW
    * @params: [webDataBinder]
    * @return: void
    * @date: 2022/1/3
    * @description: 初始化数据绑定器，增加日期转换，前端日期的输入格式为 yyyy-MM-dd ，格式只能有一种。
    */
    @InitBinder
    public void stringToDate(WebDataBinder webDataBinder){
        webDataBinder.addCustomFormatter(new DateFormatter("yyyy-MM-dd"));
        //webDataBinder.addCustomFormatter(new DateFormatter("yyyyMMdd"));
    }


    /**
    * @author: ChengJW
    * @params: [data]
    * @return: com.cheng.common.results.DataRlst
    * @date: 2021/11/04
    * @description: 封装成功的响应消息
    */
    public DataRslt success(Object data){
        return DataRslt.success(data);
    }

    public DataRslt success(){
        return DataRslt.success(null);
    }

    /**
    * @author: ChengJW
    * @params: [data]
    * @return: com.cheng.common.results.DataRslt
    * @date: 2021/11/10
    * @description: layUi 数据表格成功查询到数据时，统一响应格式
    */
    public DataRslt tabSuccess(Object data){
        return new DataRslt("0",null,data);
    }

    /**
    * @author: ChengJW
    * @params: []
    * @return: com.cheng.common.results.DataRlst
    * @date: 2021/11/04
    * @description: 封装失败的响应消息
    */
    public DataRslt failure(Object data){
        return DataRslt.failure(data);
    }

    public DataRslt failure(){
        return DataRslt.failure(null);
    }

    /**
     * @author: ChengJW
     * @params: [data]
     * @return: com.cheng.common.results.DataRslt
     * @date: 2021/11/10
     * @description: layUi 数据表格未查询到数据时，统一响应格式
     */
    public DataRslt tabFailure(){
        return new DataRslt("0",null,"对不起，没有查询到您要的数据！");
    }
    /**
     * @author: ChengJW
     * @params: []
     * @return: com.cheng.common.results.DataRlst
     * @date: 2021/11/04
     * @description: 封装异常的响应消息
     */
    public DataRslt exception(){
        return DataRslt.exception();
    }

    /**
    * @author: ChengJW
    * @params: []
    * @return: java.lang.String
    * @date: 2021/11/5
    * @description: 获取登录用户账号
    */
    public String getUrNm(){
        String urNm = null;
        if (null != SecurityUtils.getSubject().getPrincipal()){
            UserInfoVO userInfoVO = (UserInfoVO)SecurityUtils.getSubject().getPrincipal();
            urNm = userInfoVO.getUrNm();
        }
        return urNm;
    }

    /**
    * @author: ChengJW
    * @params: []
    * @return: java.lang.String
    * @date: 2021/12/31
    * @description: 获取用户真实姓名
    */
    public String getUrRealNm(){
        String urRealNm = null;
        if (null != SecurityUtils.getSubject().getPrincipal()){
            UserInfoVO userInfoVO = (UserInfoVO)SecurityUtils.getSubject().getPrincipal();
            urRealNm = userInfoVO.getUrRealNm();
        }
        return urRealNm;
    }

    /**
    * @author: ChengJW
    * @params: []
    * @return: java.lang.String
    * @date: 2021/11/8
    * @description: 获取登录用户所属单位代码
    */
    public String getUrCode(){
        String urCode = null;
        if (null != SecurityUtils.getSubject().getPrincipal()){
            UserInfoVO userInfoVO = (UserInfoVO)SecurityUtils.getSubject().getPrincipal();
            urCode = userInfoVO.getUrDwCode();
        }
        return urCode;
    }
}
